This specification relates to testing storage systems.
Computer storage requirements are continually increasing as more data are being created and as processing and system requirements increase. As a result, it is quite common for users (e.g., business entities or individual persons) to require hundreds or even thousands of gigabytes of disk storage. To meet these needs, users often use a virtualized storage device. Virtualization of a storage device is the logical grouping of physical storage from multiple network storage devices into what appears to be a single logical storage virtualization results in a significant reduction in hardware and maintenance costs. A storage device using a file system and an array of hardware storage devices can provide large quantities of logical storage at a relatively small marginal cost.
The architecture of such storage devices can be complex, and there can be many potential failure points in the storage device. Accordingly, before the storage device is enabled for use by users, it is desirable to perform integrity testing on the storage device. There are, however, a variety of integrity tests that can be used. Example integrity tests include reading and writing known byte patterns over an entire logical storage; file access testing (e.g., read/write testing); integration testing each individual storage device (i.e., each hard drive) on an individual basis; etc. Many of these tests can reveal problems with particular hard drives, device drivers, and the logical storage at the file system level, i.e., at the level of the database or other architectural construct that defines the storage, organization, manipulation, and retrieval of data in storage devices. However, many of these integrity tests are designed for an uninterrupted test instance, and do not persist data structures that are representative of normal use of the logical storage and that can be accessed at an arbitrary later time to determine if a storage error has occurred.